package com.fzg.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fzg.common.enums.ResponseWrapper;
import com.fzg.common.model.param.blog.AddOrEditBlogParam;
import com.fzg.common.model.param.blog.CommentPublishBlogParam;
import com.fzg.common.model.param.diary.GetDiaryListParam;
import com.fzg.entity.Blog;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author fzg
 * @since 2022-06-20
 */
public interface BlogService extends IService<Blog> {

    /**
     * @name 方法名：getMyselfBlogList
     * @description todo: 获取自己的博客列表
     *
     * @param request 参数：HttpServletRequest
     * @param param   参数：param
     * @return ResponseWrapper
     * @date 2022/12/26 11:43
     * @author fzg
     **/
    ResponseWrapper getMyselfBlogList(HttpServletRequest request, GetDiaryListParam param);

    /**
     * @name 方法名：getBlogListByUserAid
     * @description todo: 通过用户aid查询博客列表
     *
     * @param userAid 用户aid
     * @return ResponseWrapper
     * @date 2022/12/26 11:47
     * @author fzg
     **/
    ResponseWrapper getBlogListByUserAid(Integer userAid);


    /**
     * @name 方法名：getAllBlogInfoByUserAid
     * @description todo: 根据博客aid查询博客相关所有信息（包括博客，评论等）
     *
     * @param request 参数：HttpServletRequest
     * @param blogAid 参数：博客aid
     * @return ResponseWrapper
     * @date 2022/12/26 11:48
     * @author fzg
     **/
    ResponseWrapper getAllBlogInfoByUserAid(HttpServletRequest request, Integer blogAid);

    /**
     * @name 方法名：dianzanBlog
     * @description todo: 当前登陆的用户给这条博客点赞
     *
     * @param request 参数：HttpServletRequest
     * @param aid 参数：博客aid
     * @return ResponseWrapper
     * @date 2022/12/26 11:56
     * @author fzg
     **/
    ResponseWrapper dianzanBlog(HttpServletRequest request, Integer aid);

    /**
     * @name 方法名：cancelDianzanBlog
     * @description todo: 当前登陆用户给这条博客取消点赞
     *
     * @param request 参数：HttpServletRequest
     * @param aid 参数：博客aid
     * @return ResponseWrapper
     * @date 2022/12/26 12:00
     * @author fzg
     **/
    ResponseWrapper cancelDianzanBlog(HttpServletRequest request, Integer aid);


    /**
     * @name 方法名：clickCommentLike
     * @description todo: 点击评论里面的赞，改变赞的状态
     *
     * @param request 参数：HttpServletRequest
     * @param aid 参数：评论aid
     * @return ResponseWrapper
     * @date 2022/12/26 13:10
     * @author fzg
     **/
    ResponseWrapper clickCommentLike(HttpServletRequest request, Integer aid);


    /**
     * @name 方法名：blogCommentPublish
     * @description todo: 发表评论
     *
     * @param request 参数：HttpServletRequest
     * @param param 参数类：CommentPublishBlogParam
     * @return ResponseWrapper
     * @date 2022/12/26 13:12
     * @author fzg
     **/
    ResponseWrapper blogCommentPublish(HttpServletRequest request, CommentPublishBlogParam param);


    /**
     * @name 方法名：collectBlog
     * @description todo: 点击收藏，收藏这个博客
     *
     * @param request 参数：HttpServletRequest
     * @param blogAid 参数：博客aid
     * @return ResponseWrapper
     * @date 2022/12/26 14:09
     * @author fzg
     **/
    ResponseWrapper collectBlog(HttpServletRequest request, Integer blogAid);

    /**
     * 点击取消收藏这个博客
     * @return ResponseWrapper
     */
    ResponseWrapper cancelCollectBlog(HttpServletRequest request, Integer blogAid);

    /**
     * 关注这个博客的作者
     * @return ResponseWrapper
     */
    ResponseWrapper guanzhuBlogAuthor(HttpServletRequest request, Integer blogAid);

    /**
     * 取消关注这个博客的作者
     * @return ResponseWrapper
     */
    ResponseWrapper cancelGuanzhuBlogAuthor(HttpServletRequest request, Integer blogAid);

    /**
     * 添加或者编辑博客
     * @return ResponseWrapper
     */
    ResponseWrapper addOrEditBlog(HttpServletRequest request, AddOrEditBlogParam param);

    /**
     * 获取系统给当前登陆的用户推荐的所有日记列表
     * @return ResponseWrapper
     */
    ResponseWrapper getRecommentBlogList(HttpServletRequest request);

    /**
     * 获取当前登陆这个用户关注的所有用户的所有博客列表
     * @return ResponseWrapper
     */
    ResponseWrapper getCurrentUserConcernUserBlogList(HttpServletRequest request);
}
